package com.lesama.stream;

/*
    Stream流对象： 将数据放在流水线的传送带上
    1. 集合获取Stream流对象 （使用Collection接口中的默认方法）
        default Stream<E> stream()
        * Map集合获取Stream流对象， 需要间接获取
            -- map.entrySet().stream()
    2. 数组获取Stream流对象 （使用Arrays数组工具类中的静态方法）
        static <T> Stream<T> stream (T[] array)
    3. 零散的数据获取Stream流对象 （使用Stream类中的静态方法）
        static <T> Stream<T> of(T... values)
 */

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Stream;

public class StreamDemo1 {
    public static void main(String[] args) {
        collectionMethod();
        System.out.println("-------------------");
        ArrayMethod();
        System.out.println("-------------------");
        Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 9).filter(num -> num >= 5).forEach(System.out::println);
    }

    private static void ArrayMethod() {
        int[] arr = new int[8];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = i;
        }
        Arrays.stream(arr).filter(item -> item < 5).forEach(System.out::println);
    }

    private static void collectionMethod() {
        List<String> list1 = new ArrayList<>();
        Collections.addAll(list1, "张三丰", "张无忌", "张长生", "张飞", "韩立");
        list1.stream().filter(item -> item.startsWith("张")).filter(item -> item.length() == 3).forEach(System.out::println);

        Map<String, Integer> map = new HashMap<>();
        map.put("今汐", 16);
        map.put("菲比", 17);
        map.put("卡提西亚", 18);
        map.put("弗洛洛", 19);
        map.entrySet().stream().forEach(System.out::println);
    }
}
